# RUN: yaml2obj %s -o %t.obj

# RUN: rm -f %t.dll %t.pdb
# RUN: lld-link /debug /pdbaltpath:test.pdb /dll /out:%t.dll /entry:DllMain %t.obj
# RUN: llvm-readobj --coff-debug-directory %t.dll > %t.1.txt
# RUN: lld-link /debug /pdbaltpath:test.pdb /dll /out:%t.dll /entry:DllMain %t.obj
# RUN: llvm-readobj --coff-debug-directory %t.dll > %t.2.txt
# RUN: cat %t.1.txt %t.2.txt | FileCheck %s

# RUN: rm -f %t.dll %t.pdb
# RUN: lld-link /debug /pdb:%t1.pdb /dll /out:%t.dll /entry:DllMain %t.obj
# RUN: llvm-readobj --coff-debug-directory %t.dll > %t.3.txt
# RUN: lld-link /debug /pdb:%t2.pdb /dll /out:%t.dll /entry:DllMain %t.obj
# RUN: llvm-readobj --coff-debug-directory %t.dll > %t.4.txt
# RUN: cat %t.3.txt %t.4.txt | FileCheck --check-prefix TWOPDBS %s

# RUN: rm -f %t.dll %t.pdb
# RUN: lld-link /Brepro /dll /out:%t.dll /entry:DllMain %t.obj
# RUN: llvm-readobj --coff-debug-directory %t.dll | FileCheck --check-prefix REPRO %s

# RUN: rm -f %t.dll %t.pdb
# RUN: lld-link /Brepro /debug /dll /out:%t.dll /entry:DllMain %t.obj
# RUN: llvm-readobj --coff-debug-directory %t.dll | FileCheck --check-prefix REPRODEBUG %s

# RUN: rm -f %t.dll %t.pdb
# RUN: lld-link /lldmingw /debug:dwarf /dll /out:%t.dll /entry:DllMain %t.obj
# RUN: llvm-readobj --coff-debug-directory %t.dll | FileCheck --check-prefix MINGW %s

# CHECK: File: [[FILE:.*]].dll
# CHECK: DebugDirectory [
# CHECK:   DebugEntry {
# CHECK:     Characteristics: 0x0
# CHECK:     TimeDateStamp: 
# CHECK:     MajorVersion: 0x0
# CHECK:     MinorVersion: 0x0
# CHECK:     Type: CodeView (0x2)
# CHECK:     SizeOfData: 0x{{[^0]}}
# CHECK:     AddressOfRawData: 0x{{[^0]}}
# CHECK:     PointerToRawData: 0x{{[^0]}}
# CHECK:     PDBInfo {
# CHECK:       PDBSignature: 0x53445352
# CHECK:       PDBGUID: [[GUID:\(([A-Za-z0-9]{2} ?){16}\)]]
# CHECK:       PDBAge: 1
# CHECK:       PDBFileName: {{.*}}.pdb
# CHECK:     }
# CHECK:   }
# CHECK: ]
# CHECK: File: [[FILE]].dll
# CHECK: DebugDirectory [
# CHECK:   DebugEntry {
# CHECK:     Characteristics: 0x0
# CHECK:     TimeDateStamp: 
# CHECK:     MajorVersion: 0x0
# CHECK:     MinorVersion: 0x0
# CHECK:     Type: CodeView (0x2)
# CHECK:     SizeOfData: 0x{{[^0]}}
# CHECK:     AddressOfRawData: 0x{{[^0]}}
# CHECK:     PointerToRawData: 0x{{[^0]}}
# CHECK:     PDBInfo {
# CHECK:       PDBSignature: 0x53445352
# CHECK:       PDBGUID: [[GUID]]
# CHECK:       PDBAge: 1
# CHECK:       PDBFileName: {{.*}}.pdb
# CHECK:     }
# CHECK:   }
# CHECK: ]

# TWOPDBS: File: [[FILE:.*]].dll
# TWOPDBS: DebugDirectory [
# TWOPDBS:   DebugEntry {
# TWOPDBS:     Characteristics: 0x0
# TWOPDBS:     TimeDateStamp: 
# TWOPDBS:     MajorVersion: 0x0
# TWOPDBS:     MinorVersion: 0x0
# TWOPDBS:     Type: CodeView (0x2)
# TWOPDBS:     SizeOfData: 0x{{[^0]}}
# TWOPDBS:     AddressOfRawData: 0x{{[^0]}}
# TWOPDBS:     PointerToRawData: 0x{{[^0]}}
# TWOPDBS:     PDBInfo {
# TWOPDBS:       PDBSignature: 0x53445352
# TWOPDBS:       PDBGUID: [[GUID:\(([A-Za-z0-9]{2} ?){16}\)]]
# TWOPDBS:       PDBAge: 1
# TWOPDBS:       PDBFileName: {{.*}}.pdb
# TWOPDBS:     }
# TWOPDBS:   }
# TWOPDBS: ]
# TWOPDBS: File: [[FILE]].dll
# TWOPDBS: DebugDirectory [
# TWOPDBS:   DebugEntry {
# TWOPDBS:     Characteristics: 0x0
# TWOPDBS:     TimeDateStamp: 
# TWOPDBS:     MajorVersion: 0x0
# TWOPDBS:     MinorVersion: 0x0
# TWOPDBS:     Type: CodeView (0x2)
# TWOPDBS:     SizeOfData: 0x{{[^0]}}
# TWOPDBS:     AddressOfRawData: 0x{{[^0]}}
# TWOPDBS:     PointerToRawData: 0x{{[^0]}}
# TWOPDBS:     PDBInfo {
# TWOPDBS:       PDBSignature: 0x53445352
# TWOPDBS-NOT:       PDBGUID: [[GUID]]
# TWOPDBS:       PDBAge: 1
# TWOPDBS:       PDBFileName: {{.*}}.pdb
# TWOPDBS:     }
# TWOPDBS:   }
# TWOPDBS: ]

# REPRO: File: {{.*}}.dll
# REPRO: DebugDirectory [
# REPRO:   DebugEntry {
# REPRO:     Characteristics: 0x0
# REPRO:     TimeDateStamp: 
# REPRO:     MajorVersion: 0x0
# REPRO:     MinorVersion: 0x0
# REPRO:     Type: Repro (0x10)
# REPRO:     SizeOfData: 0x0
# REPRO:     AddressOfRawData: 0x0
# REPRO:     PointerToRawData: 0x0
# REPRO:   }
# REPRO: ]

# REPRODEBUG: File: {{.*}}.dll
# REPRODEBUG: DebugDirectory [
# REPRODEBUG:   DebugEntry {
# REPRODEBUG:     Characteristics: 0x0
# REPRODEBUG:     TimeDateStamp: 
# REPRODEBUG:     MajorVersion: 0x0
# REPRODEBUG:     MinorVersion: 0x0
# REPRODEBUG:     Type: CodeView (0x2)
# REPRODEBUG:     SizeOfData: 0x{{[^0]}}
# REPRODEBUG:     AddressOfRawData: 0x{{[^0]}}
# REPRODEBUG:     PointerToRawData: 0x{{[^0]}}
# REPRODEBUG:     PDBInfo {
# REPRODEBUG:       PDBSignature: 0x53445352
# REPRODEBUG:       PDBGUID: 
# REPRODEBUG:       PDBAge: 1
# REPRODEBUG:       PDBFileName:
# REPRODEBUG:     }
# REPRODEBUG:   }
# REPRODEBUG:   DebugEntry {
# REPRODEBUG:     Characteristics: 0x0
# REPRODEBUG:     TimeDateStamp: 
# REPRODEBUG:     MajorVersion: 0x0
# REPRODEBUG:     MinorVersion: 0x0
# REPRODEBUG:     Type: Repro (0x10)
# REPRODEBUG:     SizeOfData: 0x0
# REPRODEBUG:     AddressOfRawData: 0x0
# REPRODEBUG:     PointerToRawData: 0x0
# REPRODEBUG:   }
# REPRODEBUG: ]

# MINGW: File: {{.*}}.dll
# MINGW: DebugDirectory [
# MINGW:   DebugEntry {
# MINGW:     Characteristics: 0x0
# MINGW:     TimeDateStamp:
# MINGW:     MajorVersion: 0x0
# MINGW:     MinorVersion: 0x0
# MINGW:     Type: CodeView (0x2)
# MINGW:     SizeOfData: 0x{{[^0]}}
# MINGW:     AddressOfRawData: 0x{{[^0]}}
# MINGW:     PointerToRawData: 0x{{[^0]}}
# MINGW:     PDBInfo {
# MINGW:       PDBSignature: 0x53445352
# MINGW:       PDBGUID: [[GUID:\(([A-Za-z0-9]{2} ?){16}\)]]
# MINGW:       PDBAge: 1
# MINGW:       PDBFileName:
# MINGW:     }
# MINGW:   }
# MINGW: ]
--- !COFF
header:
  Machine:         IMAGE_FILE_MACHINE_I386
  Characteristics: [  ]
sections:
  - Name:            .text
    Characteristics: [ IMAGE_SCN_CNT_CODE, IMAGE_SCN_MEM_EXECUTE, IMAGE_SCN_MEM_READ ]
    Alignment:       4
    SectionData:     31C0C3
  - Name:            .data
    Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA, IMAGE_SCN_MEM_READ, IMAGE_SCN_MEM_WRITE ]
    Alignment:       4
    SectionData:     ''
  - Name:            .bss
    Characteristics: [ IMAGE_SCN_CNT_UNINITIALIZED_DATA, IMAGE_SCN_MEM_READ, IMAGE_SCN_MEM_WRITE ]
    Alignment:       4
    SectionData:     ''
symbols:
  - Name:            .text
    Value:           0
    SectionNumber:   1
    SimpleType:      IMAGE_SYM_TYPE_NULL
    ComplexType:     IMAGE_SYM_DTYPE_NULL
    StorageClass:    IMAGE_SYM_CLASS_STATIC
    SectionDefinition:
      Length:          3
      NumberOfRelocations: 0
      NumberOfLinenumbers: 0
      CheckSum:        3963538403
      Number:          1
  - Name:            .data
    Value:           0
    SectionNumber:   2
    SimpleType:      IMAGE_SYM_TYPE_NULL
    ComplexType:     IMAGE_SYM_DTYPE_NULL
    StorageClass:    IMAGE_SYM_CLASS_STATIC
    SectionDefinition:
      Length:          0
      NumberOfRelocations: 0
      NumberOfLinenumbers: 0
      CheckSum:        0
      Number:          2
  - Name:            .bss
    Value:           0
    SectionNumber:   3
    SimpleType:      IMAGE_SYM_TYPE_NULL
    ComplexType:     IMAGE_SYM_DTYPE_NULL
    StorageClass:    IMAGE_SYM_CLASS_STATIC
    SectionDefinition:
      Length:          0
      NumberOfRelocations: 0
      NumberOfLinenumbers: 0
      CheckSum:        0
      Number:          3
  - Name:            '@feat.00'
    Value:           1
    SectionNumber:   -1
    SimpleType:      IMAGE_SYM_TYPE_NULL
    ComplexType:     IMAGE_SYM_DTYPE_NULL
    StorageClass:    IMAGE_SYM_CLASS_STATIC
  - Name:            _DllMain
    Value:           0
    SectionNumber:   1
    SimpleType:      IMAGE_SYM_TYPE_NULL
    ComplexType:     IMAGE_SYM_DTYPE_FUNCTION
    StorageClass:    IMAGE_SYM_CLASS_EXTERNAL
...
